package com.example.demo.dao;

import com.example.demo.bean.product;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List;

@Repository
@Transactional
public class FirstDao {
    @PersistenceContext
    private EntityManager entityManager;


    public int getAll() {
        List<product> productList = entityManager.createQuery("from product").getResultList();
        return productList.size();
    }

    public product findone() {
        return entityManager.find(product.class, Integer.valueOf(1));
        /**
         * 可能涉及session的创建，无法开启二级缓存，以后可以看源码
         */
//        return (product) entityManager.createQuery("from product").getResultList().get(0);
    }
    /**
     * 每次查询从索引位置开始找MaxSize数条记录
     * @param startIndex 开始的索引
     * @param maxSize 单页最大记录数
     * @return
     */
    public List<product> getItems(int startIndex, int maxSize) {
        List<product> productList = entityManager.createQuery("from product").setFirstResult(startIndex).setMaxResults(maxSize).getResultList();
        return  productList;
    }

    public void save (product p){
        /**
         * 这个直接可以通过事务注解的方式配置
         */
        entityManager.persist(p);
    }
}
